///*
// * File Name：SentenceSpeechControler.java
// * Copyright：Copyright 2008-2015 CiWong.Inc. All Rights Reserved.
// * Description： SentenceSpeechControler.java
// * Modify By：res-jxliu
// * Modify Date：2015-1-23
// * Modify Type：Add
// */
//package com.ciwong.epaper.modules.evaluate.util;
//
//import android.app.Activity;
//import android.content.Context;
//import android.os.SystemClock;
//import android.text.TextUtils;
//import android.util.Log;
//import android.view.LayoutInflater;
//import android.view.View;
//import android.view.ViewGroup;
//import android.widget.AdapterView;
//import android.widget.AdapterView.OnItemClickListener;
//import android.widget.BaseAdapter;
//import android.widget.ImageView;
//import android.widget.ListAdapter;
//import android.widget.ListView;
//import android.widget.TextView;
//
//import com.ciwong.epaper.R;
//import com.ciwong.epaper.application.EApplication;
//import com.ciwong.epaper.modules.epaper.bean.Answer;
//import com.ciwong.epaper.modules.epaper.bean.WorkAnswers;
//import com.ciwong.epaper.modules.evaluate.bean.AnswerRecorder;
//import com.ciwong.epaper.modules.evaluate.bean.RepeatAnswerInfo;
//import com.ciwong.epaper.modules.evaluate.bean.Sentence;
//import com.ciwong.epaper.modules.evaluate.bean.SentencesDetail;
//import com.ciwong.epaper.modules.evaluate.bean.WordDetail;
//import com.ciwong.epaper.modules.me.bean.RequirementContent;
//import com.ciwong.epaper.util.EConstants;
//import com.ciwong.epaper.util.ESystem;
//import com.ciwong.epaper.util.LogOutUtil;
//import com.ciwong.epaper.widget.evaluate.SentenceSpeechView;
//import com.ciwong.epaper.widget.evaluate.SpeechTextView;
//import com.ciwong.libs.audio.play.AudioPlayer;
//import com.ciwong.libs.audio.play.OnPlayListener;
//import com.ciwong.libs.oralevaluate.bean.EvaluateResult;
//import com.ciwong.libs.oralevaluate.bean.Word;
//import com.ciwong.libs.utils.CWLog;
//import com.ciwong.libs.utils.StringUtils;
//import com.ciwong.mobilelib.bean.UserInfoBase;
//import com.ciwong.mobilelib.i.BaseCallBack;
//import com.ciwong.mobilelib.utils.BaseConstants;
//import com.unisound.edu.oraleval.sdk.sep15.IOralEvalSDK;
//import com.unisound.edu.oraleval.sdk.sep15.SDKError;
//
//import java.io.File;
//import java.util.ArrayList;
//import java.util.Iterator;
//import java.util.List;
//import java.util.concurrent.CopyOnWriteArrayList;
//
///**
// * 跟读、通读、背诵语音识别控制中心
// *
// * @author res-jxliu
// * @version ciwong v.1.0 2015-1-23
// * @since ciwong v.1.0
// */
//public class SentenceSpeechControler extends SpeechController
//        implements OnItemClickListener
//{
//    /**
//     * 逐句跟读
//     */
//    public static final int LISTENER_MODE_ZHUJU = 1;
//
//    /**
//     * 独立通读
//     */
//    public static final int LISTENER_MODE_DULI = 11;
//
//    /**
//     * 选段背诵
//     */
//    public static final int LISTENER_MODE_XUANDUAN = 21;
//
//    /**
//     * 选段背诵:用户点击某一句，对比此句的录音
//     */
//    public static final int OPERATE_MODE_XUANDUAN_CONTRAST = 22;
//
//    /**
//     * 独立通读:从头到尾朗读
//     */
//    public static final int OPERATE_MODE_XUANDUAN_ALL_CONTRAST = 23;
//
//    /**
//     * 正在从头到尾朗读
//     */
//    public static final int OPERATE_STATUS_CONTRASTING = 4;
//
//    /**
//     * 从头到尾朗读暂停状态
//     */
//    public static final int OPERATE_STATUS_CONTRAST_PAUSE = -4;
//
//    private static final String DEF_SPLIT = "[|]";
//
//    /**
//     * 段落分隔符
//     */
//    private static final String DEF_PARAGRAPH_SPLIT = "※";
//
//    public ArrayList<Sentence> sentences = new ArrayList<Sentence>();
//
//    private Sentence curSentence;
//
//    // private String paragraphText;
//    private ListView listView;
//
//    private ListAdapter adapter;
//
//    private long startTime;
//
//    private int operateMode;// 操作模式：逐句跟读、选段背诵、独立通读、单词跟读
//
//    private int listenerMode;// 听说模式：逐句跟读、选段背诵、独立通读
//
//    private String sentenceText;
//
//    private SentenceSpeechView speechView;
//
//    // private List<List<AnswerRecorder>> allRecorders;
//
//    private boolean isItemClick;// 是否是ListView中的项点击
//
//    private OnSpeechListener mOnSpeechListener;
//
//    private float maxScore;
//
//    private int maxScoreIndex;
//
//    private Thread playThread;
//
//    private boolean isPlayAllFirst, isPlayStarted;// 是否是最先播放全文（与对比跟读比较）,是否已经跟读读
//
//    private boolean isPlayAll = false;// 当前是否是播放全文
//
//    private RequirementContent requContent;
//
//    public void setRequContent(RequirementContent requContent)
//    {
//        this.requContent = requContent;
//    }
//
//    private OnPlayListener listener = new OnPlayListener()
//    {
//
//        @Override
//        public void stop(Object mp3)
//        {
//            Log.d("xixi","播放完成----------");
//
//            if (ASIDE_AUDIO_TAG.equals(mp3))
//            {
//                //录音
//                record();
//                return;
//            }
//            //正确的执行顺序22
//            CWLog.i(TAG, "stop1 operateStatus:" + operateStatus);
//            if (isRestart || operateStatus == OPERATE_STATUS_STOP
//                    || operateStatus == OPERATE_STATUS_COMPARISON_PAUSE)
//            {
//                return;
//            }
//            switch (playStatus)
//            {
//                case PLAY_STATUS_PLYAING_1://跟读播放原音状态
//                case PLAY_STATUS_PLYAING_5://let's try again
//                    if (playStatus == PLAY_STATUS_PLYAING_5)
//                    {
//                        curSentence.setHasGrade(false);//设置是否已经评分
//                        curSentence.setTextColor(mContext.getResources()
//                                .getColor(R.color.default_text_color));//默认颜色
//                        SpeechTextView currSpeechTextView = speechView
//                                .getCurrSpeechTextView(curSentence);
//                        if (currSpeechTextView != null)
//                        {
//                            currSpeechTextView.setTextColor(
//                                    mContext.getResources().getColor(
//                                            R.color.default_text_color));
//                            currSpeechTextView.setSentence(curSentence,false);
//                        }
//                    }
//                    if (operateStatus != OPERATE_STATUS_PLAY_PAUSE               //正常的播放暂停状态
//                            && operateStatus != OPERATE_STATUS_CONTRAST_PAUSE)  //从头到尾朗读暂停状态
//                    {
//                        noticeSpeechPlay();
//                        CWLog.i(TAG, "唤起播放线程 let's try again");
//                    }
//                    break;
//                //单词或句子对比播放原音状态
//                case PLAY_STATUS_PLYAING_2:
//                    CWLog.i(TAG, "------- PLAY_STATUS_PLYAING_2 operateStatus:"
//                            + operateStatus);
//                    if (operateStatus != OPERATE_STATUS_COMPARISON_PAUSE) //对比播放原音及录音暂停状态
//                    {
//                        if (isPlayRecord)// 是否回放录音
//                            {
//                            operateStatus = OPERATE_STATUS_COMPARISONING;//对比播放原音及录音状态(用户点击每一行)
//                            playRecord(currentListenAndRepeatIndex);//播放录音
//                        }
//                        else
//                        {
//                            noticeSpeechPlay();//唤醒跟读时等待的线程
//                            CWLog.i(TAG, "唤醒跟读时等待的线程===单词或句子对比播放原音状态" );
//
//                        }
//                    }
//                    break;
//                //单词或句子对比播放录音状态
//                case PLAY_STATUS_PLYAING_3:
//                    CWLog.i(TAG, "------- PLAY_STATUS_PLYAING_3 operateStatus:"
//                            + operateStatus);
//
//                    if (operateStatus != OPERATE_STATUS_COMPARISON_PAUSE)
//                    {
////                        speechView.resetInitState();
//                        //正在进行
//                        operateStatus = OPERATE_STATUS_PLAYING;
//                        noticeSpeechPlay();
//                        CWLog.i(TAG, "唤醒跟读时等待的线程===单词或句子对比播放录音状态22PLAY_STATUS_PLYAING_3" );
//                    }
//                    break;
//                //语音播放评分结果(you_can_do_better,good job,excellent)
//                case PLAY_STATUS_PLYAING_4:
//                    // 对比播放原音及录音暂停状态
//                    if (operateStatus != OPERATE_STATUS_COMPARISON_PAUSE)
//                    {
//                        CWLog.i(TAG, "PLAY_STATUS_PLYAING_4 operateMode:"
//                                + operateMode);
//                        // if (operateMode == LISTENER_MODE_ZHUJU)
//                        // {
//                        //// 是否回放录音
//                        if (isPlayRecord)
//                        {
//                            //对比播放原音及录音状态(用户点击每一行)
//                            operateStatus = OPERATE_STATUS_COMPARISONING;
//                            playRecord(currentListenAndRepeatIndex);
//                        }
//                        else
//                        {
//                            noticeSpeechPlay();
//                            CWLog.i(TAG, "唤醒跟读时等待的线程===语音播放评分结果(you_can_do_better,good job,excellent)" );
//                        }
//
//                    }
//                    break;
//            }
//        }
//
//        @Override
//        public void onPlayStart(Object mp3)
//        {
//
//        }
//
//
//        @Override
//        public void onReadPlayer(long duration, Object mp3)
//        {
//
//            if (ASIDE_AUDIO_TAG.equals(mp3))
//            {
//                return;
//            }
//            // 获取播放单词时长
//            if (!"pcm".equals(mp3 + ""))
//            {
//                audioDuration = duration + RECORD_ADD_DURATION;
//                CWLog.i(TAG+"获取播放单词时长2222audioDuration","audioDuration=====audioDuration=======:"+audioDuration);
//
//            }
//            mHandler.postDelayed(new Runnable()
//            {
//                @Override
//                public void run()
//                {
//                    //执行顺序 正确的44
//                    CWLog.i(TAG, "onReadPlayer:" + lastMark);
//                    lastMark = curMark;
//                }
//            }, 100);
//            if (listenerMode != LISTENER_MODE_ZHUJU
//                    && operateMode == listenerMode
//                    && playStatus == PLAY_STATUS_PLYAING_1)
//            {
//                noticeSpeechPlay();
//                CWLog.i(TAG, "noticeSpeechPlay():唤醒等待的线程" );
//            }
//        }
//
//        @Override
//        public void onError(int errorCode,final Object tag)
//        {
//            CWLog.i(TAG, "播放错误   onError(int errorCode, Object tag)");
//            // if (!"pcm".equals(tag + "") && (listenerMode ==
//            // LISTENER_MODE_ZHUJU
//            // || operateMode != listenerMode))
//            Log.d("xixi","----------nofile-------"+tag);
//
//            if (!"pcm".equals(tag + ""))
//            {
//                if (eEngine != null)
//                {
//                    eEngine.cancel();
//                }
//                speechView.hideStateImg();
//                mOnSpeechListener.setNormal(false, false);
//                AudioPlayer.getInstance().stop();
//                final File file=new File(tag+"");
//                showErrorDialog(new BaseCallBack()
//                {
//                    @Override
//                    public void success()
//                    {
//                        mOnSpeechListener.setNormal(true,
//                                operateMode != listenerMode);
//                        //文件不存在则表示被清理掉了
//                        if(!file.exists()){
//                            mOnSpeechListener.notFile();
//                        }
//                    }
//                    @Override
//                    public void failed(int errorCode, Object data)
//                    {
//
//                    }
//                    @Override
//                    public void failed(Object data)
//                    {
//
//                    }
//                },file.exists());
//                return;
//            }
//            stop(tag);
//        }
//
//        @Override
//        public void onBuffer(Object mp3, long progress, long total)
//        {
//            CWLog.i(TAG, "  播放缓存 onBuffer(int errorCode, Object tag)");
//
//        }
//
//        @Override
//        public void onPlaying(long arg0, long arg1)
//        {
//            CWLog.i(TAG, " 正在播放  onPlaying(long arg0, long arg1)");
//        }
//
//    };
//
//    /**
//     * 构造函数
//     *
//     * @param mContext
//     *            {@link Context}
//     */
//    protected SentenceSpeechControler(Context mContext)
//    {
//        super(mContext);
//    }
//
//    /**
//     * 构造函数
//     *
//     * @param speechView
//     *            {@link SentenceSpeechView}
//     */
//    public SentenceSpeechControler(SentenceSpeechView speechView)
//    {
//        this(speechView.getContext());
//        this.speechView = speechView;
//        init();
//    }
//
//    private void init()
//    {
//        mContext = speechView.getContext();
//        initYZSEngine();
//    }
//
//    /**
//     * 设置操作模式
//     *
//     * @param mode
//     *            {@link #LISTENER_MODE_DULI}<br />
//     *            {@link #LISTENER_MODE_XUANDUAN}<br />
//     *            {@link #LISTENER_MODE_ZHUJU}<br />
//     *            {@link #OPERATE_MODE_XUANDUAN_ALL_CONTRAST}<br />
//     *            {@link #OPERATE_MODE_XUANDUAN_CONTRAST}
//     */
//    public void setOperateMode(int mode)
//    {
//        operateMode = mode;
//    }
//
//    /**
//     * 设置通读、跟读、背诵模式
//     *
//     * @param listenerMode
//     *            {@link #LISTENER_MODE_DULI}、 {@link #LISTENER_MODE_XUANDUAN}、
//     *            {@link #LISTENER_MODE_ZHUJU}
//     */
//    public void setListenerMode(int listenerMode)
//    {
//        this.listenerMode = listenerMode;
//        setOperateMode(listenerMode);
//    }
//
//    private File getSoundPath(Sentence sentence)
//    {
//        return new File(ESystem.getAnswersMediaPath(uuid),
//                StringUtils.md5(sentence.getText())
//                        + EConstants.AUDIO_DEFAULT_SUFFIX);
//    }
//
//    /**
//     * 开始录音提示音
//     *
//     * @param index
//     *            下标
//     */
//    private void startRecordHint(final int index)
//    {
//        if (index >= sentences.size())
//        {
//            CWLog.i(TAG,"开始录音提示音index >= sentences.size()======================");
//            return;
//        }
//        //为了不打乱播放顺序  在播放旁白时做了延时2016/09/27
//        mHandler.postDelayed(new Runnable()
//        {
//            @Override
//            public void run()
//            {
//                CWLog.i(TAG,"开始播放旁白音频  =====================");
//                AudioPlayer.getInstance().play(R.raw.repeat_read_start_record, mContext,
//                        ASIDE_AUDIO_TAG);
//                CWLog.i(TAG,"播放旁白音频结束  ======================");
//            }
//        },1000);
//       /* CWLog.i(TAG,"开始播放旁白音频  非常重要======================");
//        AudioPlayer.getInstance().play(R.raw.repeat_read_start_record, mContext,
//                ASIDE_AUDIO_TAG);
//        CWLog.i(TAG,"播放旁白音频结束  非常重要======================");*/
//        mHandler.post(new Runnable()
//        {
//            @Override
//            public void run()
//            {
//                speechView.hideStateImg();
//            }
//        });
//    }
//
//    /**
//     * 录音
//     */
//    private void record()
//    {
//        mHandler.post(new Runnable()
//        {
//            @Override
//            public void run() {
//                //是否暂停状态
//                if (isPause()) {
//                    return;
//                }
//                CWLog.i(TAG, "开始录音语句 record start, audioDuration:" + audioDuration);
//                Sentence sentence = sentences.get(currentListenAndRepeatIndex);
//                eEngine.setText(
//                        SpeechUtils.replaceEvaluateText(sentence.getText()));
//                eEngine.setRecordPath(getSoundPath(sentence).getAbsolutePath());
//                //开始录音语句
//                speechView.startRecord(1);
//                mOnSpeechListener.startRecordAnim();
//                speechView.getStateImg()
//                        .setOnClickListener(new View.OnClickListener() {
//                            @Override
//                            public void onClick(View v) {
//                                // mHandler.removeCallbacksAndMessages(null);
//                                // stopRecord(sentence);
//                            }
//                        });
//                //正常的录音状态，即第一次的录音
//                operateStatus = OPERATE_STATUS_RECORDING;
//
//                UserInfoBase userInfoBase =  EApplication.getInstance().getUserInfoBase();
//                if (null != userInfoBase) {
//                    eEngine.setUid(String.valueOf(userInfoBase.getUserId()));
//                }
//
//                //设置相关配置
//                eEngine.start();
//                mHandler.postDelayed(new Runnable() {
//                    @Override
//                    public void run() {
//
//                        if (isPause()) {
//                            return;
//                        }
//                        stopRecord();
//                    }
//                }, audioDuration);
//            }
//        });
//    }
//
//    /**
//     *
//     * /** 停止录音
//     *
//     */
//    private void stopRecord()
//    {
//        if (operateStatus == OPERATE_STATUS_RECORDING)
//        {
//            speechView.hideStateImg();
//        }
//        mOnSpeechListener.stopRecordAnim();
//        eEngine.stop();
//        CWLog.i(TAG, "停止录音:stopRecord" + audioDuration);
//    }
//
//    /**
//     * 播放录音
//     *
//     * @param index
//     */
//    private void playRecord(int index)
//    {
//        if (index >= answerRecorders.size())
//        {
//            return;
//        }
//        playStatus = PLAY_STATUS_PLYAING_3;
//        speechView.play(1);
//        CWLog.i(TAG, "playRecord mp3");
//        AnswerRecorder ar = answerRecorders.get(index);
//        AudioPlayer.getInstance()
//                .play(BaseConstants.FILE_PREFIX + ar.getSoundUrl(), null);
//        CWLog.i(TAG, "播放录音playRecord mp3");
//        // }
//    }
//
//    private void playWord(int index)
//    {
//        playWord(index, true);
//    }
//
//    private void playWord(int index, final boolean autoPlay)
//    {
//        Log.d("xixi","这个地方方法"+index+"-----"+sentences.size());
//        final Sentence sentence = sentences.get(index);
////        mHandler.post(new Runnable()
////        {
////            @Override
////            public void run()
////            {
//                String url = ESystem.formatPath(sentence.getSentenceMp3());// .replace("
//
//
//                if (playStatus != PLAY_STATUS_PLYAING_2 || isItemClick)
//                {
//                    Log.d("xixi","这个地方speechView.play()"+index+"-----"+sentences.size());
//                    speechView.play(1);
//                }
//                if (url == null)
//                {
//                    url = "";
//                }
//                // mOnSpeechListener.onChangeState(true);
//                AudioPlayer.getInstance().setOnPlayListener(listener).play(url,
//                        autoPlay);
//        Log.d("xixi","这个地方播放"+index+"-----"+sentences.size());
//                CWLog.i(TAG, "播放音频结束  playWord(int index, final boolean autoPlay) url:" + url);
////            }
////        });
//    }
//
//    /**
//     * 重新开始
//     *
//     * @return
//     */
//    public boolean reStart()
//    {
//        isPlayAll = false;
//        AudioPlayer.getInstance().stop();
//        isRestart = true;
//        isItemClick = false;
//        CWLog.i("debug", "reStart");
//        userAnswerseList.clear();
//        currentListenAndRepeatIndex = 0;
//        errorRepeatCount = 0;
//        answerCount = sentences.size();
//        hasRepeat = false;
//        answerRecorders.clear();
//        speechView.toTop();
//        if (answerUploadFailures != null)
//        {
//            answerUploadFailures.clear();
//        }
//        if (answerUploadSuccess != null)
//        {
//            answerUploadSuccess.clear();
//        }
//        operateStatus = OPERATE_STATUS_NORMAL;
//        // allRecorders.clear();
//        for (Iterator iterator = sentences.iterator(); iterator.hasNext();)
//        {
//            Sentence sentence = (Sentence) iterator.next();
//            sentence.setHasGrade(false);
//        }
//        if (speechView != null)
//        {
//            speechView.resetView();
//        }
//        return start();
//    }
//
//    @Override
//    public boolean isPause()
//    {
//        //是否是暂停状态
//        return super.isPause()
//                || operateStatus == OPERATE_STATUS_CONTRAST_PAUSE;// 从头到尾朗读暂停状态
//    }
//
//    /**
//     * 从头到尾朗读
//     */
//    public void playAll()
//    {
//        isPlayAll = true;
//        if (!isPlayStarted)
//        {
//            isPlayAllFirst = true;
//        }
//        operateMode = listenerMode + 2;
//        currentListenAndRepeatIndex = 0;
//        hasRepeat = true;
//        if (operateMode == OPERATE_MODE_XUANDUAN_ALL_CONTRAST)
//        {
//            speechView.setFillblank(false);
//        }
//        if (playThread == null)
//        {
//            play();
//        }
//        else
//        {
//            operateStatus = OPERATE_STATUS_CONTRASTING;
//            noticeSpeechPlay();
//            CWLog.i(TAG, ":唤醒等待的线程：public void playAll() 从头到尾朗读" );
//
//        }
//    }
//
//    /**
//     * 停止从头到尾朗读
//     */
//    public void stopPlayAll()
//    {
//        isPlayAll = false;
//        resetLineColor();
//        if (operateMode == OPERATE_MODE_XUANDUAN_ALL_CONTRAST)
//        {
//            speechView.setFillblank(true);
//        }
//        // speechView.resetInitState();
//        operateMode = listenerMode;
//        operateStatus = OPERATE_STATUS_PLAYING;
//        pause();
//    }
//
//    private void resetLineColor()
//    {
//        if (curSentence != null)
//        {
//            // speechView.changeLineBgSentence(curSentence, Color.TRANSPARENT);
//        }
//    }
//
//    /**
//     * 开始跟读或朗读
//     */
//    private void play()
//    {
//        //如果走线程呢
//
////        playThread = new Thread()
////        {
////            public void run()
////            {
//                // if (allRecorders == null)
//
//                // {
//                // allRecorders = new ArrayList<List<AnswerRecorder>>();
//                // }
//                if (answerRecorders == null)
//                {
//                    answerRecorders = new CopyOnWriteArrayList<AnswerRecorder>();
//                }
//                operateStatus = OPERATE_STATUS_PLAYING;
//
//                Log.d("xixi","这个地方"+currentListenAndRepeatIndex+"-----"+sentences.size());
//
//                while (currentListenAndRepeatIndex < sentences.size()
//                        && operateStatus != OPERATE_STATUS_STOP)
//                {
//                    Log.d("xixi","这个地方里面"+currentListenAndRepeatIndex+"-----"+sentences.size());
////                    if (isRestart)
////                    {
////                        SystemClock.sleep(500);
////                    }
////                    if (isPause())
////                    {
////                        CWLog.i(TAG, "播放资源音频  播放线程开始挂起33暂停状态");
////                        waitPlayer();
////                        CWLog.i(TAG, "播放资源音频  播放线程开始挂起3完成3暂停状态");
////
////                    }
////                    if (operateStatus == OPERATE_STATUS_STOP)
////                    {
////                        break;
////                    }
//                    resetLineColor();
//                    curSentence = sentences.get(currentListenAndRepeatIndex);
////                    CWLog.e(TAG,
////                            "currentListenAndRepeatIndex:"
////                                    + currentListenAndRepeatIndex
////                                    + "      curSentence:" + curSentence);
//                    if (operateMode == listenerMode)
//                    {
//                        // speechView.changeLineSentence(curSentence,
//                        // SpeechColor.COLOR_BLUE);
//                        // speechView.changeLineBgSentence(curSentence,
//                        // mContext.getResources().getColor(
//                        // R.color.ls_item_option_selected));
//                        cacheListenAndRepeatIndex = currentListenAndRepeatIndex;
//                    }
////
////                    if (hasRepeat && !isPlayAllFirst)
////                    {
////                        hasRepeat = false;
////                    }
////                    else if (operateMode == listenerMode)
////                    {
////                        if (isPlayAllFirst)
////                        {
////                            hasRepeat = false;
////                        }
////                        if (answerRecorders
////                                .size() <= currentListenAndRepeatIndex)
////                        {
////                            AnswerRecorder ar = new AnswerRecorder();
////                            answerRecorders.add(ar);
////                        }
////                        errorRepeatCount = 0;
////                        isPlayAllFirst = false;
////                        startTime = System.currentTimeMillis();
////                    }
////                    else if (isPlayAllFirst && hasRepeat)
////                    {
////                        hasRepeat = false;
////                    }
////                    CWLog.i(TAG, "------run1 operateStatus:" + operateStatus);
////                    if (isPause())
////                    {
////                        CWLog.i(TAG, "播放资源音频  播放线程开始挂起22暂停状态");
////                        waitPlayer();
////                        CWLog.i(TAG, "播放资源音频  播放线程开始挂起完成22暂停状态");
////                        if (operateStatus == OPERATE_STATUS_STOP)
////                        {
////                            break;
////                        }
////                    }
////                    synchronized (sentences)
////                    {
//                        operateStatus = OPERATE_STATUS_PLAYING;
////
////                        CWLog.i(TAG, "设置操作状态为1  operateStatus = OPERATE_STATUS_PLAYING;");
//                        playStatus = PLAY_STATUS_PLYAING_1;
////                        CWLog.i(TAG, "设置播放状态为1   playStatus = PLAY_STATUS_PLYAING_1;");
//                           playWord(currentListenAndRepeatIndex,
//                                   listenerMode == LISTENER_MODE_ZHUJU
//                                           || operateMode != listenerMode);
//                    Log.d("xixi","这个地方播放"+currentListenAndRepeatIndex+"-----"+sentences.size());
////
////
////                    }
////                    isRestart = false;
////                    CWLog.i(TAG, "播放资源音频  播放线程开始挂起11");
////                    waitPlayer();
////                    CWLog.i(TAG, "播放资源音频  播放线程开始挂起完成11");
////                    if (operateMode == listenerMode + 2)
////                    {// 全文播放
////                        if (hasRepeat)
////                        {
////                            continue;
////                        }
////                        // 是从头到尾朗诵一遍
////                        currentListenAndRepeatIndex++;
////                        speechView.hideStateImg();
////                        if (currentListenAndRepeatIndex >= sentences.size())
////                        {
////                            resetLineColor();
////                            mHandler.post(new Runnable()
////                            {
////                                @Override
////                                public void run()
////                                {
////                                    if (mOnSpeechListener != null)
////                                    {
////                                        // 从头到尾朗读完成
////                                        mOnSpeechListener.onListenerComplete();
////                                    }
////                                }
////                            });
////                            operateStatus = OPERATE_STATUS_CONTRAST_PAUSE;
////                            CWLog.i(TAG, "播放资源音频  播放线程开始挂起44currentListenAndRepeatIndex >= sentences.size()");
////                            waitPlayer();
////                            CWLog.i(TAG, "播放资源音频  播放线程开始挂起44currentListenAndRepeatIndex >= sentences.size()");
////                            if (operateMode == listenerMode + 2)
////                            {
////                                currentListenAndRepeatIndex = 0;
////                            }
////                        }
////                        else
////                        {// 全文播放一句完成
////                            SystemClock.sleep(readDuration);
////                            CWLog.i(TAG, "系统休息1000毫秒，切换句子: mOnSpeechListener.onComplete(-1)");
////                            mOnSpeechListener.onComplete(-1);
////
////                        }
////                        continue;
////                    }
////                    if (isWordLoadError)
////                    {
////                        // 单词音频文件加载错误
////                        currentListenAndRepeatIndex++;
////                        answerCount--;
////                        isWordLoadError = false;
////                        // 单词加载错误后停顿1000毫秒
////                        SystemClock.sleep(1000);
////                        continue;
////                    }
////                    if (operateStatus == OPERATE_STATUS_STOP)
////                    {
////                        break;
////                    }
////                    if (hasRepeat)
////                    {
////                        continue;
////                    }
////                    //执行顺序11
////                    CWLog.i(TAG, "------run2 operateStatus:" + operateStatus);
////                    if (isPause())
////                    {
////                        CWLog.i(TAG, "播放资源音频  播放线程开始挂起55暂停");
////                        waitPlayer();
////                        CWLog.i(TAG, "播放资源音频  播放线程开始挂起完成55暂停");
////                        if (operateStatus == OPERATE_STATUS_STOP)
////                        {
////                            break;
////                        }
////                    }
////                    synchronized (sentences)
////                    {
////                        //录音提示音
////                        startRecordHint(currentListenAndRepeatIndex);
////                        ////执行顺序33
////                        CWLog.i(TAG,
////                                "------run4 operateStatus:" + operateStatus);
////                    }
////
////                    CWLog.i(TAG, "播放线程挂起");
////                    //录音提示音后
////                    waitPlayer();
////                    CWLog.i(TAG, "播放线程挂起完成");
////                    if (operateStatus == OPERATE_STATUS_STOP)
////                    {
////                        break;
////                    }
////                    if (hasRepeat)
////                    {
////                        continue;
////                    }
////                    // if (!answerRecorders.contains(answerRecorders))
////                    // {
////                    // answerRecorders.add(answerRecorders);
////                    // }
////                    //在此增加索引
////
//                    currentListenAndRepeatIndex++;
////                    isAreadyRepeat = false;
////                    if (currentListenAndRepeatIndex < sentences.size())
////                    {
////                        SystemClock.sleep(readDuration);
////                        CWLog.i(TAG,
////                                "系统休息1000 onOneWordComplete transcoding:if (currentListenAndRepeatIndex < sentences.size())" );
////
////                        onOneSentenceComplete(currentListenAndRepeatIndex - 1);
////                    }
////                }
////                if (operateStatus != OPERATE_STATUS_STOP)
////                {
////                    if (mOnSpeechListener != null)
////                    {
////                        if (currentListenAndRepeatIndex < sentences.size())
////                        {
////                            onOneComplete();
////                        }
////                        else
////                        {
////                            onAllComplete();
////                        }
////                    }
////                    CWLog.i(TAG,
////                            "onOneWordComplete transcoding:非系统休息" );
////
////
////                    onOneSentenceComplete(currentListenAndRepeatIndex - 1);
////                    CWLog.i(TAG, "complete");
////                }
////                operateStatus = OPERATE_STATUS_NORMAL;
////
//            }
////        };
////        playThread.start();
//    }
//
//    /**
//     * 继续跟读
//     *
//     * @return
//     */
//    public boolean continuePlay()
//    {
//        currentListenAndRepeatIndex = 0;
//        return start();
//    }
//
//    /**
//     * 开始跟读
//     *
//     * @return
//     */
//    public boolean start()
//    {
//        isPlayAll = false;
//        isPlayStarted = true;
//        // 第一次跟读时不执行此操作
//        // if (currentListenAndRepeatIndex == 0)
//        // {
//        // }
//        operateStatus = OPERATE_STATUS_NORMAL;
//        speechView.toTop();
//        play();
//        return true;
//    }
//
//    private void onOneComplete()
//    {
//        onOneComplete(true);
//    }
//
//    private void onOneComplete(final boolean isRefresh)
//    {
//        final int avg = getAvgScore();
//        if (maxScore < avg)
//        {
//            maxScore = avg;
//            CWLog.i(TAG, "maxScoreIndex:" + maxScoreIndex);
//        }
//        CWLog.i(TAG, "onOneComplete(final boolean isRefresh):");
//        mHandler.post(new Runnable()
//        {
//            @Override
//            public void run()
//            {
//                mOnSpeechListener.onComplete(avg);
//                speechView.showResult(avg);
//                if (isRefresh)
//                {
//                    refreshSpeechView(true);
//                }
//            }
//        });
//    }
//
//    private void onAllComplete()
//    {
//        CWLog.i(TAG, " onAllComplete():");
//        onOneComplete(false);
//        mHandler.post(new Runnable()
//        {
//            @Override
//            public void run()
//            {
//                allComplete(true);
//            }
//        });
//    }
//
//    /**
//     * 已跟读完所有，刷新UI
//     *
//     * @param isPlayAudio
//     */
//    public void allComplete(boolean isPlayAudio)
//    {
//        CWLog.i(TAG, " onAllComplete():已跟读完所有，刷新UI");
//        Answer answer = new Answer();
//        answer.setWorkLong(totalTime / 1000);
//        mOnSpeechListener.onAllComplete(isPlayAudio, answer, userAnswerseList,
//                uuid, getAvgScore());
//        showResult();
//    }
//
//    private void showResult()
//    {
//        if (listView != null)
//        {
//            // if (adapter == null)
//            // {
//            adapter = new ResultAdapter();
//            listView.setAdapter(adapter);
//            // }
//            // else
//            // {
//            // listView.setSelection(0);
//            // }
//        }
//    }
//
//    /**
//     * 暂停后重新跟读
//     */
//    public void resume(Boolean allAfterPouse)
//    {
//        isPlayAll = false;
//        isWordLoadError = false;
//        if (speechView != null)
//        {
//            speechView.resetInitState();
//        }
//        operateStatus = -operateStatus;
//        if (operateMode == listenerMode)
//        {
//            currentListenAndRepeatIndex = cacheListenAndRepeatIndex;
//        }
//        CWLog.i(TAG,
//                "------resume operateStatus:" + operateStatus
//                        + "    currentListenAndRepeatIndex:"
//                        + currentListenAndRepeatIndex);
//        if (operateStatus == OPERATE_STATUS_RECORDING
//                || operateStatus == OPERATE_STATUS_PLAYING
//                || operateStatus == OPERATE_STATUS_CONTRASTING)
//        {
//            //如果是切换全文后再次跟读的时候 不走这个逻辑
//            if(allAfterPouse){
//
//            }else {//以前逻辑
//                curSentence.setHasGrade(false);
//                curSentence.setTextColor(mContext.getResources()
//                        .getColor(R.color.default_text_color));
//                if (speechView != null) {
//                    SpeechTextView currSpeechTextView = speechView
//                            .getCurrSpeechTextView(curSentence);
//                    if (currSpeechTextView != null) {
//                        currSpeechTextView.setSentence(curSentence,true);
//                    }
//                }
//            }
//            resumeListener();
//        }
//        else if (operateStatus == OPERATE_STATUS_COMPARISONING)
//        {
//            if (listenerMode == LISTENER_MODE_ZHUJU)
//            {
//                playStatus = PLAY_STATUS_PLYAING_2;
//                playWord(currentListenAndRepeatIndex);
//            }
//            else
//            {
//                noticeSpeechPlay();
//                CWLog.i(TAG, ":唤醒等待的线程：暂停后重新跟读" );
//            }
//        }
//    }
//
//    /**
//     * 暂停
//     */
//    public void pause()
//    {
//        isPlayAll = false;
//        if (operateStatus < 0)
//        {
//            return;
//        }
//        operateStatus = -operateStatus;
//        CWLog.i(TAG,
//                "------pause operateStatus:" + operateStatus
//                        + "    currentListenAndRepeatIndex:"
//                        + currentListenAndRepeatIndex);
//        if (operateStatus == OPERATE_STATUS_PLAY_PAUSE
//                || operateStatus == OPERATE_STATUS_COMPARISON_PAUSE
//                || operateStatus == OPERATE_STATUS_CONTRAST_PAUSE)
//        {
//            AudioPlayer.getInstance().stop();
//        }
//        else if (operateStatus == OPERATE_STATUS_RECORD_PAUSE)
//        {
//            eEngine.cancel();
//        }
//        speechView.resetInitState();
//    }
//
//    /**
//     * 停止跟读
//     */
//    public void stop()
//    {
//        CWLog.i(TAG, "stop2 operateStatus:" + operateStatus);
//        operateStatus = OPERATE_STATUS_STOP;
//        CWLog.i(TAG, "AudioPlayer.getInstance().stop();播放停止" );
//        AudioPlayer.getInstance().stop();
//        speechView.hideStateImg();
//        noticeSpeechPlay();
//        CWLog.i(TAG, ":唤醒等待的线程：停止跟读" );
//        if (eEngine != null)
//        {
//            eEngine.stop();
//        }
//    }
//
//    /**
//     * 释放资源
//     */
//    public void release()
//    {
//        if (eEngine != null)
//        {
//            //Activity销毁的时候 不再销毁云之声库 修改与2016/10/11
//            //eEngine.release();
//        }
//        mHandler.removeCallbacksAndMessages(null);
//    }
//
//    /**
//     * 设置语音对话监听接口
//     *
//     * @param listener
//     *            {@link OnSpeechListener}
//     */
//    public void setOnSentenceSpeechListener(OnSpeechListener listener)
//    {
//        mOnSpeechListener = listener;
//    }
//
//    /**
//     * 设置短语标题
//     *
//     * @param text
//     *            短语标题
//     */
//    public void setSentenceText(String text)
//    {
//        this.sentenceText = text;
//    }
//
//    /**
//     * 设置结果显示列表
//     *
//     * @param list
//     *            {@link ListView}
//     */
//    public void setListView(ListView list)
//    {
//        listView = list;
//        if (listView != null)
//        {
//            listView.setOnItemClickListener(this);
//        }
//    }
//
//    /**
//     * 设置句子列表
//     *
//     * @param list
//     * @param versionId
//     * @param saveUuid
//     * @param speech
//     * @param userId
//     * @return
//     */
//    public boolean setParagraphText(List<SentencesDetail> list,
//            String versionId, String saveUuid, ImageView speech, long userId,
//            boolean isAddSentences)
//    {
//        this.sentenceText = StringUtils.md5(versionId);
//        if (!TextUtils.isEmpty(saveUuid))
//        {
//            uuid = saveUuid;
//        }
//        if (sentences == null)
//        {
//            sentences = new ArrayList<Sentence>();
//        }
//        for (SentencesDetail sen : list)
//        {
//            Sentence sentence = new Sentence();
//            sentence.setTextId(sen.getVersionId());
//            String name = sen.getName().trim();
//            sentence.setText(name);
//            sentence.setSentenceMp3(sen.getAudioUrl());
//            String[] words = SpeechUtils
//                    .replaceAsSpace(SpeechUtils.replaceEvaluateText(name))
//                    .split(" |…");
//            List<WordDetail> wordList = new ArrayList<WordDetail>();
//            int l = words.length;
//            for (int z = 0; z < l; z++)
//            {
//                WordDetail word = new WordDetail();
//                String w = words[z];
//                word.setText(w);
//                word.setColor(mContext.getResources()
//                        .getColor(R.color.default_text_color));
//                wordList.add(word);
//            }
//            sentence.setWordDetails(wordList);
//            if (isAddSentences)
//            {
//                sentences.add(sentence);
//            }
//        }
//        // PreAudioDownLoad download = new PreAudioDownLoad(downloadMp3,null);
//        // download.prepare();
//        answerCount = sentences.size();
//        if (speechView != null)
//        {
//            speechView.setFillblank(operateMode == LISTENER_MODE_XUANDUAN);
//            speechView.setSentences(sentences, null, userId);
//        }
//        return true;
//    }
//
//    /**
//     * 一个句子跟读完成
//     */
//    private void onOneSentenceComplete(int index)
//    {
//        if(null != mOnSpeechListener)
//        mOnSpeechListener.onComplete(-1);
//
//        if (index != -1 && null != answerRecorders && index<answerRecorders.size())
//        {
//            AnswerRecorder ar = answerRecorders.get(index);
//            CWLog.i(TAG,
//                    "onOneWordComplete transcoding:" + ar.getSoundUrl());
//            ar.setUsetime(System.currentTimeMillis() - startTime);
//            addAnswer(ar, index);
//        }
//    }
//
//    /**
//     * 添加答案
//     *
//     * @param ar
//     */
//    private void addAnswer(AnswerRecorder ar, int index)
//    {
//        String versionId = sentences.get(index).getTextId();
//
//        WorkAnswers tempWorkAnswers = new WorkAnswers();
//        int answerIndex = userAnswerseList.indexOf(tempWorkAnswers);
//        if (answerIndex != -1) // 该对象已经存在
//        {
//            WorkAnswers<RepeatAnswerInfo> wa = userAnswerseList
//                    .get(answerIndex);
//            if (wa.getScore() < ar.getScore())
//            {
//                userAnswerseList.remove(answerIndex);
//            }
//            else
//            {
//                return;
//            }
//        }
//
//        WorkAnswers workAnswers = new WorkAnswers();
//        workAnswers.setVersionId(versionId);
//        workAnswers.setScore(ar.getScore());
//        workAnswers.setAssess(WorkAnswers.Assess.ASSESS_UNKNOWN);
//        List<RepeatAnswerInfo> details = new ArrayList<RepeatAnswerInfo>();
//        RepeatAnswerInfo entity = new RepeatAnswerInfo();
//        entity.setWord(sentences.get(index).getText());
//        String soundUrl = ar.getSoundUrl();
//        if (!TextUtils.isEmpty(soundUrl))
//        {
//            File file = new File(soundUrl);
//            if (file != null && file.exists())
//            {
//                String path = ESystem.MEDIA + File.separator + file.getName();
//                entity.setAudioUrl(path);
//            }
//        }
//        entity.setReadTimes(
//                requContent == null ? 1 : requContent.getReadtimes());
//        entity.setAudioDuration(audioDuration);
//        totalTime += (int) ar.getUsetime();
//        details.add(entity);
//        workAnswers.setAnswers(details);
//        userAnswerseList.add(workAnswers);
//
//        mOnSpeechListener.onSaveRecord(userAnswerseList, answerRecorders, uuid);
//        mOnSpeechListener.onSaveSentenceRecord(sentences);
//    }
//
//    /**
//     * 是否是选段模式
//     *
//     * @return
//     */
//    private boolean isXuanduanMode()
//    {
//        return listenerMode == LISTENER_MODE_XUANDUAN;
//    }
//
//    @Override
//    public void randomShow()
//    {
//        Sentence sentence = sentences.get(currentListenAndRepeatIndex);
//        String[] arr = SpeechUtils.replaceAsSpace(sentence.getText())
//                .split(" ");
//        List<Word> gradeWords = new ArrayList<Word>();
//        for (String s : arr)
//        {
//            Word w = new Word();
//            w.setText(s);
//            int random = (int) (Math.random() * 10 / 2);
//            w.setScore(random);
//            gradeWords.add(w);
//        }
//        final float score = (int) (Math.random() * 10 / 2);
//        CWLog.d(TAG, "item_my_work_child_score=" + item_my_work_child_score);
//        EvaluateResult eResult = new EvaluateResult();
//        eResult.setScore(score);
//        eResult.setWordDetails(gradeWords);
//        AnswerRecorder ar = onEvaluated((int) score, false);
//        if (ar != null)
//        {
//            eResult.setScore(ar.getScore());
//        }
//        speechView.showResult(eResult, sentence, isXuanduanMode());
//        if (ar != null)
//        {
//            // hasTryAgain(listenerMode == LISTENER_MODE_ZHUJU, ar.getScore());
//        }
//    }
//
//    /**
//     * 刷新界面显示
//     *
//     * @param isPlayState
//     */
//    public void refreshSpeechView(boolean isPlayState)
//    {
//        if (speechView != null)
//        {
//            speechView.addSentenceToView(currentListenAndRepeatIndex,
//                    isPlayState, false, isPlayAll);
//        }
//    }
//
//    private AnswerRecorder onEvaluated(int score, boolean playResult)
//    {
//        CWLog.d(TAG, "sentences=" + sentences);
//
//        CWLog.d(TAG,
//                "currentListenAndRepeatIndex=" + currentListenAndRepeatIndex
//                        + " sentences.size=" + sentences.size());
//        /*
//         * if (currentListenAndRepeatIndex >= sentences.size()) { return null; }
//         */
//        if (currentListenAndRepeatIndex >= sentences.size())
//        {
//            return null;
//        }
//        Sentence sentence = sentences.get(currentListenAndRepeatIndex);
//        return onEvaluated(score, getSoundPath(sentence).getAbsolutePath(),
//                playResult);
//    }
//
//    @Override
//    public void onError(IOralEvalSDK iOralEvalSDK, SDKError sdkError, IOralEvalSDK.OfflineSDKError offlineSDKError) {
//
//    }
//
//    @Override
//    public void onStart()
//    {
//
//    }
//
//    @Override
//    public void onVolume(int rms)
//    {
//        // speechView.setRms(rms, curSentence);
//    }
//
//    @Override
//    public void onStop(final int i, final EvaluateResult eResult)
//    {
//
//
//        if (eResult == null)
//        {
//            onError(-100);
//            CWLog.i(TAG, "评测错误  结果为空=onError(-100)" );
//            return;
//        }
//
//        //优化评分结果
//        eResult.setScore(/* ar.getScore() */SpeechUtils
//                .scoreOptimize(eResult.getScore()));
//
//        mHandler.post(new Runnable()
//        {
//            @Override
//            public void run()
//            {
//
//                CWLog.i(TAG, "评测结果   ======"+eResult.getScore()+"#########################+++++++++++++++++++++++++ ");
//                if (i == -2)
//                {// 报错了停止录音刷新界面
//                    speechView.hideStateImg();
//                    mOnSpeechListener.stopRecordAnim();
//                    CWLog.i(TAG, "评测错误  报错了停止录音刷新界面  i == -2" );
//                    //出现评测出错的时候  进行错误处理  目前是提示用户暂停，重新开始
//                }
//
//                int score = (int) eResult.getScore();
//                onEvaluated(score, false);
//                boolean isNeedAgain = !isAreadyRepeat
//                        && score < SpeechUtils.SCORE_1;
//                speechView.showResult(eResult, curSentence, isXuanduanMode());
//
//                if (isNeedAgain)
//                {
//                    hasRepeat = true;
//                    isAreadyRepeat = true;
//                    operateStatus = OPERATE_STATUS_COMPARISONING;
//                    playStatus = PLAY_STATUS_PLYAING_5;
//                    AudioPlayer.getInstance().play(
//                            SpeechUtils.getRandomRaw(SpeechUtils.LEVEL_A),
//                            mContext, "pcm");
//                    CWLog.i(TAG,"播放评价语");
//                }
//                else
//                {
//                    if (isPlayAssess)
//                    {
//                        playResultScore(score);
//                    }
//                    else if (isPlayRecord)
//                    {
//                        operateStatus = OPERATE_STATUS_COMPARISONING;
//                        playStatus = PLAY_STATUS_PLYAING_4;
//                        playRecord(currentListenAndRepeatIndex);
//                    }
//                    else
//                    {
//                        if (operateStatus != OPERATE_STATUS_PLAY_PAUSE
//                                && operateStatus != OPERATE_STATUS_CONTRAST_PAUSE)
//                        {
//                            noticeSpeechPlay();
//                            CWLog.i(TAG,"评分结束后,不播放评价语  不重新读时 唤醒播放线程");
//                        }
//                    }
//                }
//            }
//        });
//    }
//
//    private void comparison(int index)
//    {
//        curMark++;
//        playRecord(currentListenAndRepeatIndex);
//    }
//
//    @Override
//    public void onItemClick(AdapterView<?> parent, View view, int position,
//            long id)
//    {
//        isItemClick = true;
//        comparison(position);
//    }
//
//    class ResultAdapter extends BaseAdapter
//    {
//        private LayoutInflater inflater;
//
//        public ResultAdapter()
//        {
//            inflater = LayoutInflater.from(mContext);
//        }
//
//        @Override
//        public int getCount()
//        {
//            return sentences.size();
//        }
//
//        @Override
//        public Object getItem(int position)
//        {
//            return sentences.get(position);
//        }
//
//        @Override
//        public long getItemId(int position)
//        {
//            return position;
//        }
//
//        @Override
//        public View getView(int position, View convertView, ViewGroup parent)
//        {
//            ViewHodler holder;
//            if (convertView == null)
//            {
//                holder = new ViewHodler();
//                convertView = inflater.inflate(R.layout.item_repeat_read_result,
//                        null);
//                holder.sentence = (TextView) convertView
//                        .findViewById(R.id.words);
//
//                holder.item_my_work_child_score = (TextView) convertView.findViewById(R.id.item_my_work_child_score);
//                convertView.setTag(holder);
//            }
//            else
//            {
//                holder = (ViewHodler) convertView.getTag();
//            }
//
//            String text = sentences.get(position).getText();
//
//            int[] indexArray = SpeechUtils.isMatchPersonName(text);
//            if (indexArray != null)
//            {
//                holder.sentence.setText(text.replace("{", "").replace("}", ""));
//            }
//            else
//            {
//                holder.sentence.setText(text);
//            }
//
//            if (answerRecorders != null && position < answerRecorders.size()) {
//
//                int score = answerRecorders.get(position).getScore();
//
//                holder.item_my_work_child_score.setText(item_my_work_child_score + "");
//                int id = 0;
//                if (score <= SpeechUtils.SCORE_2)
//                {
//                    id = R.mipmap.score_red;
//                }
//                else if (score <= SpeechUtils.TOTAL_SCORE_4)
//                {
//                    id = R.mipmap.score_yellow;
//                }
//                else
//                {
//                    id = R.mipmap.score_green;
//                }
//
//                holder.score.setBackgroundResource(id);
//
//            }
//
//            return convertView;
//        }
//
//        private final class ViewHodler
//        {
//            TextView sentence, score;
//        }
//    }
//}
